<script setup lang="ts">
import { useOrderPre } from '@/composables/usepicture';
import { OrderType } from '@/enums';
import router from '@/router';
import type { ConsultOrderItem } from '@/types/consult';
const { showMed } = useOrderPre()
import ConsultMore from './ConsultMore.vue'

defineOptions({
    name: 'ConsultItem'
})

// 接收父组件传的数据
const props = defineProps<{
    item: ConsultOrderItem
}>()

// 取消订单
import { useCancelOrder, useDeleteOrder } from '@/composables/index'
const { onLoading, cancelConsultOrder } = useCancelOrder()

// 删除订单
// 子向父传值
const emit = defineEmits<{
    'on-delete': [id: string]
}>()
const { delLoading, delelOrder } = useDeleteOrder(() => {
    emit('on-delete', props.item.id)
})

</script>

<template>
    <div class="consult-item">
        <div class="head van-hairline--bottom">
            <img class="img" src="@/assets/avatar-doctor.svg" />
            <p>{{ item.docInfo?.name || '暂未分配医生' }}</p>
            <span :class="{
                orange: item.status === OrderType.ConsultPay,
                green: item.status === OrderType.ConsultChat
            }">
                {{ item.statusValue }}
            </span>
        </div>
        <div class="body" @click="router.push(`/user/consult/${item.id}`)">
            <div class="body-row">
                <div class="body-label">病情描述</div>
                <div class="body-value">{{ item.illnessDesc }}</div>
            </div>
            <div class="body-row">
                <div class="body-label">价格</div>
                <div class="body-value">¥ {{ item.payment.toFixed(2) }}</div>
            </div>
            <div class="body-row">
                <div class="body-label">创建时间</div>
                <div class="body-value tip">{{ item.createTime }}</div>
            </div>
        </div>
        <!-- 按钮 -->
        <!-- 待支付 -->
        <div class="foot" v-if="item.status === OrderType.ConsultPay">
            <van-button class="gray" plain size="small" round :loading="onLoading"
                @click="cancelConsultOrder(item)">取消问诊</van-button>
            <van-button type="primary" plain size="small" round :to="`/user/consult/${item.id}`">去支付</van-button>
        </div>
        <!-- 已完成 -->
        <div class="foot" v-if="item.status === OrderType.ConsultComplete">
            <!-- 更多 -->
            <consult-more :disabled="!item.prescriptionId" @on-show="showMed(item.prescriptionId)"
                @on-delete="delelOrder(item)">
            </consult-more>
            <van-button class="gray" plain size="small" round :to="`/room?orderId=${item.id}`">问诊记录</van-button>
            <van-button type="primary" plain size="small" round v-if="item.evaluateId"
                :to="`/room?orderId=${item.id}`">查看评价</van-button>
            <van-button type="primary" plain size="small" round v-else :to="`/room?orderId=${item.id}`">写评价</van-button>
        </div>
        <!-- 问诊中 -->
        <div class="foot" v-if="item.status === OrderType.ConsultChat">
            <van-button class="gray" plain size="small" round v-if="item.prescriptionId"
                @click="showMed(item.prescriptionId)">查看处方</van-button>
            <van-button type="primary" plain size="small" round :to="`/room?orderId=${item.id}`">继续沟通</van-button>
        </div>
        <!-- 待接诊 -->
        <div class="foot" v-if="item.status === OrderType.ConsultWait">
            <van-button class="gray" plain size="small" round :loading="onLoading"
                @click="cancelConsultOrder(item)">取消问诊</van-button>
            <van-button type="primary" plain size="small" round :to="`/room?orderId=${item.id}`">继续沟通</van-button>
        </div>
        <!-- 取消订单 -->
        <div class="foot" v-if="item.status === OrderType.ConsultCancel">
            <van-button class="gray" plain size="small" round :loading="delLoading"
                @click="delelOrder(item)">删除订单</van-button>
            <van-button type="primary" plain size="small" round to="/home">咨询其他医生</van-button>
        </div>
    </div>
</template>

<style lang="scss" scoped>
.consult-item {
    border-radius: 4px;
    box-shadow: 0px 0px 22px 0px rgba(245, 245, 245, 0.1);
    background-color: #fff;
    margin-bottom: 10px;

    .head {
        display: flex;
        align-items: center;
        height: 50px;
        padding: 0 15px;

        .img {
            width: 20px;
            height: 20px;
        }

        >p {
            flex: 1;
            font-size: 15px;
            padding-left: 10px;
        }

        >span {
            color: var(--cp-tag);

            &.orange {
                color: #f2994a;
            }

            &.green {
                color: var(--cp-primary);
            }
        }
    }

    .body {
        padding: 15px 15px 8px 15px;

        .body-row {
            display: flex;
            margin-bottom: 7px;
        }

        .body-label {
            width: 62px;
            font-size: 13px;
            color: var(--cp-tip);
        }

        .body-value {
            width: 250px;

            &.tip {
                color: var(--cp-tip);
            }
        }
    }

    .foot {
        padding: 0 15px 15px 15px;
        display: flex;
        justify-content: flex-end;
        align-items: center;

        .van-button {
            margin-left: 10px;
            padding: 0 16px;

            &.gray {
                color: var(--cp-text3);
                background-color: var(--cp-bg);
            }
        }
    }
}
</style>
